package com.iol.stpso.util;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Date;

import android.content.Context;
import android.util.Log;

public class Logger {
	private final static String Tag = Constants.APP_NAME;
//	private final static String filename = Constants.LOG_DIR+File.separator+"Applog";
	private static boolean Debug = false;
	private static boolean init = false;
	
	public static void loadConfig(){
		if(!init ){
			Object debug = Utils.getAppMeta("debug");
			if(debug!=null){
				try{
					Debug = (Boolean) debug;
				}catch(Exception e){
					Logger.e("debug tag is error");
				}
			}init = true;
		}
	}
	
	public static void v(String msg){
		if(isDebug()){
			Log.v(Tag, msg);
		}
	}
	public static void d(String msg){
		if(isDebug()){
			Log.d(Tag, msg);
		}
	}
	public static void i(String msg){
		if(isDebug()){
			Log.i(Tag, msg);
		}
	}
	public static void w(String msg){
		if(isDebug()){
			Log.w(Tag, msg);
		}
	}
	public static void e(String msg){
		if(isDebug()){
			Log.e(Tag, msg);
//			print(msg,Log.ERROR);
		}
	}

	public static void e(String msg,Throwable tr){
		if(isDebug()){
			StackTraceElement[] eles = tr.getStackTrace();
			for(StackTraceElement e:eles){
				e(e.toString());
			}
		}
	}
	private static boolean isDebug() {
		if(!init){
			loadConfig();
		}
		return Debug;
	}

//	@SuppressWarnings("unused")
//	private static synchronized void print(String msg, int level) {
//		StringBuilder sb = new StringBuilder();
//		sb.append("["+DateFormat.datetimeToString(new Date(System.currentTimeMillis()))+"]");
//		switch(level){
//		case Log.VERBOSE:
//			sb.append("[Verbose]/t");
//			break;
//		case Log.INFO:
//			sb.append("[Info]/t");
//			break;
//		case Log.DEBUG:
//			sb.append("[Debug]/t");
//			break;
//		case Log.WARN:
//			sb.append("[Warn]/t");
//			break;
//		case Log.ERROR:
//			sb.append("[Error]/t");
//			break;
//		}
//		RandomAccessFile raf = null;
//		try{
//			String fileName = filename+"_"+DateFormat.datetimeToString(new Date(System.currentTimeMillis()));
//			File logfile = new File(fileName);
//			File parent = logfile.getParentFile();
//			if(!parent.exists()&&parent!=null){
//				parent.mkdirs();
//			}
//			if(!logfile.exists()){
//				logfile.createNewFile(); 
//			}
//			 raf = new RandomAccessFile(fileName, "rw");  
//	         raf.seek(raf.length());
//	         raf.writeBytes(sb.toString() + msg + "\r\n"); 
//		}catch(Exception e){
//			e.printStackTrace();
//		}finally{
//			if(raf!=null){
//				try {
//					raf.close();
//				} catch (IOException e) {
//					e.printStackTrace();
//				}
//			}
//		}
//	}
}
